package com.ifonly.ar.dialect;

/**
 * @author ifonly
 * @version 1.0 2015-12-03 21:43
 * @since JDK 1.6
 */
public abstract class Dialect {

    public abstract String initTableSql(String tableName);

    public static final String COUNT_KEY = "c";

    /**
     * 数据库本身是否支持分页当前的分页查询方式
     * 如果数据库不支持的话，则不进行数据库分页
     *
     * @return true：支持当前的分页查询方式
     */
    public abstract boolean support();

    /**
     * 将sql转换为分页SQL
     *
     * @param sql    SQL语句
     * @param start  开始条数
     * @param length 每页显示多少纪录条数
     * @return 分页查询的sql
     */
    public abstract String sql(String sql, int start, int length);

    /**
     * 将sql转换为Count SQL
     *
     * @param sql SQL语句
     * @return Count SQL
     */
    public String count(String sql) {
        return "SELECT count(1) AS " + COUNT_KEY + " FROM (" + sql + ") tmp_count";
    }


}
